#!/bin/bash #============================================================== # It is recommended to test the script on a local machine for its purpose and effects. # ManageEngine Endpoint Central will not be responsible for any # damage/loss to the data/setup based on the behavior of the script. # Description - Script to Clean temp files, .DS_Store and Trash for all users # Parameters - # Remarks - # Configuration Type - COMPUTER #============================================================== clean_folder() { local target="$1" [ -L "$target" ] && return if [ -d "$target" ]; then # Regular files and folders rm -rf "${target:?}/"* 2>/dev/null # Hidden files and folders rm -rf "${target:?}"/.[!.]* 2>/dev/null rm -rf "${target:?}"/..?* 2>/dev/null fi } delete_ds_store() { local target="$1" if [ -d "$target" ]; then find "$target" -type f -name ".DS_Store" -delete 2>/dev/null fi } # USER PROFILE LOOP ALL_USERS=$(dscl . -list /Users NFSHomeDirectory 2>/dev/null | \ awk '$2 ~ /^\/Users\// {print $1}') for name in $ALL_USERS; do case "$name" in root|daemon|nobody|Shared|Guest) continue ;; _*) continue ;; esac UID_VAL=$(dscl . -read /Users/"$name" UniqueID 2>/dev/null | awk '{print $2}') if [ -z "$UID_VAL" ] || [ "$UID_VAL" -lt 501 ]; then continue fi USER_HOME=$(dscl . -read /Users/"$name" NFSHomeDirectory 2>/dev/null | awk '{print $2}') USER_HOME="${USER_HOME:-/Users/$name}" [ -d "$USER_HOME" ] || continue USER_UID="$UID_VAL" # USER LIBRARY CACHES clean_folder "$USER_HOME/Library/Caches" # CLEAN COOKIES clean_folder "$USER_HOME/Library/Cookies" # CLEAN TRASH — BOOT VOLUME if [ -d "$USER_HOME/.Trash" ]; then rm -rf "${USER_HOME:?}/.Trash/"* 2>/dev/null rm -rf "${USER_HOME:?}/.Trash/".[!.]* 2>/dev/null rm -rf "${USER_HOME:?}/.Trash/"...?* 2>/dev/null fi # CLEAN TRASH — EXTERNAL VOLUMES for vol in /Volumes/*/; do [ -d "$vol" ] || continue TRASHES_PATH="${vol}.Trashes/${USER_UID}" if [ -d "$TRASHES_PATH" ]; then rm -rf "${TRASHES_PATH:?}/"* 2>/dev/null rm -rf "${TRASHES_PATH:?}"/.[!.]* 2>/dev/null fi done # DELETE .DS_STORE FILES delete_ds_store "$USER_HOME" done # Recycle bin cleanup by Finder osascript -e 'tell application "Finder" to empty trash' echo "Using Finder to empty the Bin." # SYSTEM SESSION TEMP if [ -d "/private/var/folders" ]; then find /private/var/folders -mindepth 4 \ -type f -mtime +7 -delete 2>/dev/null find /private/var/folders -mindepth 3 \ -type d -empty -delete 2>/dev/null fi echo "Session Temp Cleanup Completed." echo "Disk Cleanup Completed."